ASP NET - Visual Studio

Visual Studio Code versus Visual Studio Community Edition

As duas ferramentas são produzidas pela Microsoft e tem a finalidade de desenvolver aplicações para todas as plataformas e o melhor de tudo isso é que são gratuitas.

Sendo uma única plataforma de desenvolvimento para todas as linguagens isto tornou elas um pouco 'complexa' e algumas vezes redundante. Contudo, são muito úteis, completas, amigáveis, cheias de recursos.

Para você que é novato qual seria a diferença entre criar uma página em HTML com um Notepad++ ou mesmo um Sublime Text ou um kompozer ? É simples, pelos recursos que eles tem embutidos. Por exemplo, o visual studio Community Edition tem o intellisense e a codificação javascript embutida o que permite que voce, ao digitar a primeira ou segunda letra de uma propriedade de um item em javascript, ele sugere sua complementação, ou seja, informa que o que você está digitando esta correto e falta um complemento que ele sugere. Para escolher entre uma sugestão ou outra use as setas para cima ou para baixo do teclado e para selecionar o item clique na tecla <TAB>. Com isto você não precisa ser um genio e saber todas as tags html, css, javascript de cabeça... tem uma ajudinha do editor que ajuda nisso. E não se esqueça que HTML, por exemplo, é um padrão em constante evolução, ou seja, quando você aprender bem provavelmente já haverá um outro novo que muda tudo que antes era tido como certo.

Se você é fã do Visual Studio Code nada contra. É uma excelente ferramenta, gratuita e bem mais leve que o Visual Studio Community Edition contudo a interface com o usuário foi simplificada e o jeito de configurar seus recursos ficou para um 'segundo plano' o que deixa qualquer um com muitas dificuldades em sua utilização e sempre precisamos recorrer a ajuda da Internet para configurar alguns itens menos utilizados.

Já o Visual Studio Community Edition tem uma interface rica e amigável muito mais intuitiva que o visual Studio Code de maneira que um novato consiga operar ele de uma maneira mais amigável o que torna sua utilização mais simples. Contudo isto fez com que ele ficasse bem mais pesado que o Visual Studio Code.

Se você utiliza o Visual Studio Community Edition como ferramenta de edição sugiro as seguintes dicas :

1-Como o ASP NET opera.

É um detalhe fundamental que pode fazer você perder boas horas de pesquisa.
Todas suas páginas html, aspx, css são publicados na integra, como num site comum sem o asp net.
Já o code behind das páginas asp net (Visual Basic, C# ou seja que linguagem for ) é compilado em uma única dll e colocada na pasta bin do seu projeto. A .dll é como um .exe de uma app windows comum, só que roda num servidor web. E só podemos depositar este arquivo via um processo especial como o ftp ou uma ferramenta parecida ( que precisa de usuário e senha ). É proibido fazer isso em qualquer outra situação.

Sendo assim se eu tenho o projetox dentro dele eu tenho toda a estrutura de diretórios montada como nós planejamos, separadas por utilidade e os fontes html, css, javascript, aspx dentro delas.
Na pasta root do site ( do seu projeto ) teremos os arquivos de configuração como o Site.Master, os web.configs ( dependendo da sua segurança estes poderão estar também dentro das pastas do site )

Outra coisa importante é que os arquivos de configuração do site como o Site.Master, web.config ( se a segurança for diferenciada de um site para outro ) devem ser nomeados diferentemente para cada projeto para diferenciar o de um site para o do outro site. Sendo assim temos o Site.Master do site root, o SiteProjetoA.Master do projeto A, o SiteProjetoB.Master do projeto B e assim por diante.

Importante: Os provedores de Internet com segurança média ou alta não permitem que seu aplicativo asp net ( sua dll ) acesse componentes fora da sua pasta. Ou seja, se você usa algum componente externo, como por exemplo, o Mysql.Data. Para ter acesso ao banco de dados MySQL você precisa do MySQL.Data e você deverá copiar este componente para dentro da pasta bin do seu projeto e, dentro do seu projeto, na hora de sua construção, referenciar este componente dentro da pasta bin porque ele não terá permissão de acessar nada fora da sua pasta nativa.
Recomendo seguir a receita de bolo do seu provedor para fazer o primeiro acesso. Muitos deles só aceitam algumas versões desses componentes e mesmo assim com restrições de acesso e uso.

2-Publique apenas o que precisa ser publicado.

Vamos supor que num projeto você tenha o bootstrap, o jquery e um ou outro recurso que você raramente mude, como as imagens do site, do tipo, subiu uma vez não preciso publicar mais.
Neste caso sugiro que você vá no 'Gerenciador de Soluções' do Visual Studio, clique com o botão direito do mouse no item que deseja que não seja mais publicado e selecione o item 'Excluir do Projeto'.
Note que 'Excluir do Projeto' e não 'Excluir' porque o 'Excluir' apenas apaga o arquivo e não é isso que queremos.
Sendo assim da próxima vez que você publicar seu projeto ele não será enviado ao servidor e com isso você ganha temo reduzindo o tempo que demora para subir as coisas.
Note que você não pode excluir do seu projeto pastas ou arquivos necessários ao seu funcionamento. Se você tem uma pasta chamado usuario que tem todas as páginas de tratamento de acesso do usuário, lógicamente não poderá removê-la porque, na compilação, as páginas que fazem referencias as funcionalidades de acesso do usuário irão dar erro.

3-Sites Gordos.

Se você gerencia um site acredito que poderá ter a necessidade de publicar mais de um site dentro do seu domínio.

Por exemplo, no meu eu tenho sites públicos publicados pelo root do site e tenho sites privados, operacionais de algumas empresas.

Todos eles são feitos com a tecnologia asp net mas como conseguem convier harmonicamente dentro de um único servidor/site/domínio?
A primeira diferenciação é feita pela url. Assim ao digitar www.ideapedia.com.br você acessa um site. Ao digitar www.ideapedia.com.br/site2/ você acessa o segundo site e assim por diante. Posso ter quantos sites eu desejar dentro do meu domínio mas há um segredo em sua convivência dentro do mesmo servidor.

O segredo é o seguinte : Como todas as urls referenciam ao site root a pasta bin que o site utiliza é sempre a pasta bin do root do site e não a pasta bin do seu projeto. Assim sendo, quando eu subo um projeto dentro de um site que não é o principal eu sou obrigado a abrir a pasta do projeto num servidor ftp e copiar a .dll, dll.config, .xml, .pdb da pasta bin do projeto publicado para a pasta bin do root do site.